package org.hzero.platform.utils;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.security.Key;
import java.util.Date;

public class JwtGenerator {

    // 密钥（建议从配置文件或环境变量中读取）
    private static final String SECRET_KEY = "your-256-bit-secret-your-256-bit-secret-your-256-bit-secret";


    public static void main(String[] args) {
        // 生成 JWT Token
        String token = generateJwtToken("user123", "ROLE_USER");
        System.out.println("Generated JWT Token: " + token);
    }

    public static String generateJwtToken(String username, String realName) {
        // 设置 Token 过期时间（例如 1 小时后过期）
        long expirationTime = 1000 * 60 * 60; // 1 小时
        Date now = new Date();
        Date expiryDate = new Date(now.getTime() + expirationTime);

        // 生成密钥
        Key key = Keys.hmacShaKeyFor(SECRET_KEY.getBytes());

        // 构建 JWT Token
        return Jwts.builder()
                .setSubject(username) // 设置用户标识
                .claim("realName", realName)  // 添加自定义声明（例如角色）
                .setIssuedAt(now)     // 设置签发时间
                .setExpiration(expiryDate) // 设置过期时间
                .signWith(key, SignatureAlgorithm.HS256) // 使用 HS256 算法签名
                .compact(); // 生成最终的 Token 字符串
    }
}